package commons.params.param_component;

import commons.params.A_Params;
import commons.params.A_Params.TYPE_OBJECT;
import commons.params.A_ParamsManager;
import commons.params.objects.ObjectColor;
import java.awt.Color;
import java.util.ArrayList;
import javax.swing.JComponent;

// Table pour définir les couleurs de lignes et des noeuds

public class ParamComponent_table_Color extends AbstractParamComponent_table {

	public ParamComponent_table_Color(String name, A_ParamsManager paramsManager, JComponent component, boolean bCanBeNull) {
		super(name, paramsManager, component, bCanBeNull,
				new String[] {"Nom catégorie", "Couleur"},
				new String[] {"nomCategorie", "couleur"},
				new Class[] {String.class, Color.class});
	}
	public ParamComponent_table_Color(String name, A_ParamsManager paramsManager, JComponent component, boolean bCanBeNull, I_Activator activator) {
		super(name, paramsManager, component, bCanBeNull,
				new String[] {"Nom catégorie", "Couleur"},
				new String[] {"nomCategorie", "couleur"},
				new Class[] {String.class, Color.class},
				activator);
	}
	// appelée à la fin par ParamsManager afin de constituer le Params
	// l'argument params permet de retrouver certains objets déjà lus, via leur nom
	//  (les catégories, en l'occurence)
	public ArrayList<ObjectColor> getVColor(A_Params params, TYPE_OBJECT typeObject) {
		ArrayList<ObjectColor> vCLN = new ArrayList<ObjectColor>();

		for (int numRow = 0; numRow <data.size() ; numRow++) {
			Object[] rowData = data.get(numRow);
			ObjectColor oc = new ObjectColor(
								params.getCategoryByName((String) rowData[0], typeObject),
								(Color)rowData[1]);

			vCLN.add(oc);
		}
		return vCLN;
	}
	
	//**************************************************************************
	//**************************************************************************

	@Override
	public void makeStandardControls() {
		assert possibleValues[0] != null;

		// pré-test si le component a un activator desactivé (active ou none component en fonction)
		if (!needControl()) return; 
		
		// Test si la table peut etre vide
		if (!bCanBeNull && bIsNull) {
			invalidateComponent("Déclaration de couleurs obligatoire", true);
			return;
		}

		beginControls();

		// Parcourt des row
		for (int numRow = 0; numRow <data.size() ; numRow++) {

			//***** Nom de la catégorie
			basicCheck_NoDoublon(numRow, 0);

			//***** Couleur
			int col = 1;
			if (data.get(numRow)[col]==null)
				addError(numRow, col, "Paramètre obligatoire");

		}
		finaliseControls();
	}
}
